C语言

您所在的位置:网站首页 数据类型bit的取值 C语言

C语言

2024-06-14 09:14| 来源: 网络整理| 查看: 265

无符号与有符号整数 原码、反码、补码

做而论道_CS: 再求一个:  -31 的八位 “补码”,是多少? 解:  把 0-31,变成二进制,再计算。  即:0000 0000 - 0001 1111   =1110 0001。 完事! ------------- 总结一下。  求-X 补码的简便方法是:   先把 +X 变成二进制;    再(整体)取反加一。 ====================== 反之,由补码换算到十进制数,也极其简单。 你只需记住:【补码首位的权,是负数】。 一般的八位二进制数,各个位的权是:   128、64、32、16、8、4、2、1; 如果是八位的补码,各个位的权则是:  -128、64、32、16、8、4、2、1。   例如,有一个补码:1110 0001, 它代表的十进制是:-128 + 64 + 32 + 1 = -31。 如果,另一个补码:0110 0001, 它代表的十进制是:0 + 64 + 32 + 1 = +97。 仅仅使用【进制转换】,不就完事了吗?  哪里还用想什么:补码取反加一就是原码! ---------------------- 正负数与其 “补码” 的互相换算,就是这么简单。 至于:机器数符号位原码反码取反加一 ...  这些谎话,都是计算机专家在【卖拐】呢。   千万千万,可别上他们的当啊! 谁要是跟老外学算术,  立刻、马上、直接,就掉沟里去了!  

无符号与有符号整数 原码、反码、补码

做而论道_CS: 哪有什么原码反码补码啊! 虽然,计算机使用的,是二进制数。 但是,二进制数,也是数。  并不是什么“机器数”。   更不是什么 “原码反码补码”。 作为数字,二进制、十进制,都是一样的数。  所谓的真值,也就是这些二进制数本身。 如果用数字,代表 “非数字”,才能叫做 “码”。 如:学号、门牌车牌电话性别股票英文汉字声音颜色 ... 另外,在码长八位时,各码的范围如下。  原码:-127 ~ +127;  反码:-127 ~ +127;  补码:-128 ~ +127。 看到了吧?  -128 只有补码,没有原码和反码。 没有原码,拿什么取反? 没有反码,拿什么加一? 取反加一,不可用!  -128 的补码,又是怎么来的?   是谁特殊规定的吗?    不是的! 所有的补码,都是算出来的。  但是,并不是用 “原码取反加一” 算的。 那么,该怎么算呢? --------------------- 学习补码之前,首先要知道;  计算机使用二进制。  计算机只有加法器,负数或减法运算,都要用加法完成。  计算机的字长,是固定值。 由于上述原因,14-14 = 0,八位机将如下计算:  0000 1110-xxxx xxxx = 0000 0000。 这里的 xxxx xxxx,就是:-14 ! 那么,xxxx xxxx,究竟是什么呢?  你肯定会推导的。 先移项:xxxx xxxx = 0000 0000-0000 1110。 可算出:xxxx xxxx = (借位 1) 1111 0010。 只取八位,结果就是:1111 0010。 这就是计算机专家鼓吹的【补码】!  即:[-14 ]补码 = 1111 0010。 ---------------------- 实际上,任意负数(-X)的补码,都是:0 - X。  你用二进制简单算一下,立刻就能得到结果。  (-128 的 8 位补码,也就是这样求出来的。) 同理,任意正数(+X)的补码,也都是:0 + X。 这还用算?  0 + X,不就是 X 吗?   即,零和正数的补码,就是 X 本身! 简不简单? 意不意外?

二维数组的定义和初始化

m0_69316294: 前面第一二纬度是不是标反了?既然是先行后列,那不是应该:第一维度是行、第二维度是列吗?

使用MDK-ARM(KEIL V5)创建一个工程(有图有文字)

烽火戏诸猴丶: 安装的时候会有,自己找找。就蒙了表情包

模块化程序设计、条件编译、模块化程序设计与多文件编程实例、自顶向下、逐步求精、模块分解的基本原则

花果山黄皮猴: 神来之笔



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3