C#如何在Socket传递负数,比如-51
1.关于计算机中的原码、反码和补码定义
1.原码
将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。
为了简单起见,我们用1个字节来表示一个整数。
+7的原码为: 00000111
-7的原码为: 10000111
2.反码
一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,其余各位是对原码取反。
为了简单起见,我们用1个字节来表示一个整数:
+7的反码为:00000111
-7的反码为: 11111000
3.补码
补码:一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,则符号位为1,其余各位是对原码取反,然后整个数加1。为了简单起见,我们用1个字节来表示一个整数:
+7的补码为: 00000111
-7的补码为: 11111001
已知一个负数的补码,将其转换为十进制数,步骤:
1、先对各位取反;
2、将其转换为十进制数;
3、加上负号,再减去1。
例如:
11111010,最高位为1,是负数,先对各位取反得00000101,转换为十进制数得5,加上负号得-5,再减1得-6。
4、如何在Socket中传输负数,比如-1
一般在Socket中传输负数的时候,我们可以传输其补码即可,例如我们要传输-51,我们可以传输他的补码即0xCD,在进行协议解析的时候,我们将其对应的为0xCD再还原成原来负数。
//要传输的负值
sbyte val = -; //取其补码
byte bVal = (byte)val; //还原为负数
sbyte sVal = (sbyte)bVal;
C#如何在Socket传递负数,比如-51的更多相关文章
- C#(服务器)与Java(客户端)通过Socket传递对象(序列化 json)
下面详细讲解实现的关键步骤: 通信关键: C#和java用Socket通信,发送数据和接收数据可以统一采用UTF-8编码,经过测试,使用UTF-8编码可以成功传递对象. 对于Sock ...
- 如何在socket编程的Tcp连接中实现心跳协议
from http://blog.csdn.net/nyist327/article/details/39586203 心跳包的发送,通常有两种技术方法1:应用层自己实现的心跳包 由应用程序自己发送心 ...
- java socket - 传递对象
Person类: package com.zhyea.olproxy.socket; import java.io.Serializable; public class Person implemen ...
- java之Socket传递图片
客户端: package client; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...
- 利用socket传递图片
package com.company.s3; import java.io.File; import java.io.FileOutputStream; import java.io.InputSt ...
- Unix网络编程(1)——socket一窥
套接口地址结构 IPv4的套接口地址结构为: struct sockaddr_in { uint8_t sin_len; sa_family_t sin_family; struct in_addr ...
- 「Python」socket指南
开始 网络中的 Socket 和 Socket API 是用来跨网络的消息传送的,它提供了 进程间通信(IPC) 的一种形式.网络可以是逻辑的.本地的电脑网络,或者是可以物理连接到外网的网络,并且可以 ...
- socket通信
socket通信 一:socket基于Tcp连接,数据传输有保证 二:socket连接的建立过程: 1:服务器监听 2:客户端发出请求 3:建立连接 4:通信 三:一个简单的例子:服务器端每隔一段时间 ...
- Socket开发框架之消息的回调处理
在一般的Socket应用里面,很多时候数据的发送和接收是分开处理的,也就是我们发送一个消息,不知道这个请求消息什么时候得到应答消息,而且收到对应的应答消息的时候,如果操作界面的内容,也是需要特别处理的 ...
随机推荐
- 【华容道】题解(NOIP2013提高组day2)
分析 这道题很容易想到令f[x][y][x1][y1]表示空白块在(x,y).指定棋子在(x1,y1)时的最少步数,让空白块和四周的棋子交换,当空白块要和指定棋子交换时,把指定棋子移动,搞一下BFS就 ...
- [洛谷P4436] HNOI/AHOI2018 游戏
问题描述 一次小G和小H在玩寻宝游戏,有n个房间排成一列,编号为1,2,...,n,相邻的房间之间都有一道门.其中一部分门上锁(因此需要有对应的钥匙才能开门),其余的门都能直接打开.现在小G告诉了小H ...
- 6392. 【NOIP2019模拟2019.10.26】僵尸
题目描述 题解 吼题但题解怎么这么迷 考虑一种和题解不同的做法(理解) 先把僵尸离散化,h相同的钦(ying)点一个大小 (可以发现这样每种情况只会被算正好一次) 计算完全被占领的方案,然后1-方案/ ...
- 面试题常考&必考之--js数组排序冒泡排序和快速排序
冒泡排序: 原理:比较相邻的元素,将值大的元素交换到右边.(如果相等不进行交换) 实例: 要排列数组:[10,1,35,61,89,36,55] 第一趟排序: 第1次排序:10和1比较,10>1 ...
- 【Java】JavaMail使用网易企业邮箱发邮件
邮件发送器 /** * 邮件发送器 * * @author Zebe */ public class MailSender implements Runnable { /** * 收件人 */ pri ...
- 小程序封装wx.request,以及调用
1.新建一个api目录,与pages同级 2.在api目录下新建一个api.js文件 3.编写代码 const host = 'http://test.test.cn' const wxRequest ...
- 《SQL Server 2012 T-SQL基础》读书笔记 - 9.事务和并发
Chapter 9 Transactions and Concurrency SQL Server默认会把每个单独的语句作为一个事务,也就是会自动在每个语句最后提交事务(可以设置IMPLICIT_TR ...
- JavaScript export
export The export statement is used when creating JavaScript modules to export functions, objects, o ...
- Oracle Flashback Drop
Ensure that the prerequisites described in Prerequisites of Flashback Drop are met. The following li ...
- 如何利用EDM邮件营销进行持续推销
一般来说,一个电子商务网站的转化率在2%左右是正常的.这也意味着其他98%的潜在客户并不会购买任何东西,并且可能再也不回来了.这个时候,如何利用EDM邮件营销进行持续推销呢? 首先,EDM邮件营销可以 ...