C中进制, 原码, 反码与补码的简单用法
/**
* 二进制 binary 如: 1010
* 八进制 octal 如: 070
* 十六进制 hexadecimal 如: 0x7f
*
* 1Byte = 8bits
* 1WORD = 2Bytes = 16bits "字"
* 2WORD = 4Bytes = 32bits = 1DWORD "双字"
*
* 原码, 反码和补码
* 二进制原码中, 第一位代表符号位, 1为负(negative), 0为正(positive)
* 正数: 原码 = 反码 = 补码
* 负数: 反码 = 原码除符号位外, 其他各位按位取反
* 补码 = 反码 + 1
* 计算机中数字是按补码进行存储的
*/
#include <stdio.h>
int main() {
int a = 11;
// 输出变量a的十进制, 八进制, 十六进制结果
printf("变量a的十进制为 %d, 八进制为 %o, 十六进制为 %x\n", a, a, a); // 变量a的十进制为 11, 八进制为 13, 十六进制为 b
int b = 11;
// 输出变量b的原码, 反码和补码
printf("变量b的值为 %d, 原码为 0000 1101, 反码为 0000 1101, 补码为 0000 1101\n", b); // 变量b的值为 11, 原码为 0000 1101, 反码为 0000 1101, 补码为 0000 1101
// 输出变量c的原码, 反码和补码
int c = -11;
printf("变量c的值为 %d, 原码为 1000 1101, 反码为 1111 0010, 补码为 1111 0011\n", c); // 变量c的值为 -11, 原码为 1000 1101, 反码为 1111 0010, 补码为 1111 0011
int d = -1;
// 输出变量d的原码, 反码和补码
printf("变量d的值为 %d, 原码为 1000 0000 0000 0000 0000 0000 0000 0001, 反码为 1111 1111 1111 1111 1111 1111 1111 1110, 补码为 1111 1111 1111 1111 1111 1111 1111 1111\n", d);
// 以上输出: 变量d的值为 -1, 原码为 1000 0000 0000 0000 0000 0000 0000 0001, 反码为 1111 1111 1111 1111 1111 1111 1111 1110, 补码为 1111 1111 1111 1111 1111 1111 1111 1111
// 输出变量d的无符号整数, 实际输出的是d的补码的十进制数 4294967295
printf("变量d的值为 %d, 无符号整数为 %u\n", d, d); // 变量d的值为 -1, 无符号整数为 4294967295
int e = 100;
// 输出变量e在内存中占的字节数
printf("整型变量e的值为 %d, 在内存中占 %d 个字节\n", e, sizeof(e)); // 整型变量e的值为 100, 在内存中占 4 个字节
return 0;
}
C中进制, 原码, 反码与补码的简单用法的更多相关文章
- [转]C语言的int最值问题,以及原码反码及补码
以2字节为例来说: 对于无符号的数值(原码反码及补码都一样),最大值为1111 1111 1111 1111=65535 最小值为0000 0000 0000 0000=0 对于有符号的来 ...
- java 原码反码及补码 总结
参考: http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html http://blog.csdn.net/lius ...
- 原码 & 反码 & 补码 & 详解
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...
- Java 原码 反码 补码
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...
- 位移&二进制转换&原码&反码&补码
<< 左移 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零. 格式 需要移位的数字 << 移位的次数 计算过程 1. 按二进制形式把所有的数字向左 ...
- C语言学习笔记之原码反码补码
原码:就是我们自己看的,以及机器输出给我们看的 补码:机器永远是以补码的形式将数据保存在计算机中 正数: 原码=反码=补码 负数: 反码:原码的符号位不变,其他位取反 ,1变0 0变1 补码:机器 ...
- python3笔记二:进制转换与原码反码补码
一:学习内容 进制:二进制.八进制.十进制.十六进制 进制转换 原码.反码.补码 二:进制 二进制 1.二进制:只有0和1,逢2进1 2.举例:0+0=0.0+1=1.1+1=10 3.过程剖析:二进 ...
- python之计算机硬件基本认知_数据单位_进制间转换_数的原码反码补码
一:计算机硬件基本认知 cpu: 中央处理器. 相当于人的大脑.运算中心,控制中心. 内存: 临时存储数据. 优点:读取速度快,缺点:容量小,造价高,断电即消失. 硬盘: 长期存储数据. ...
- 大数据学习--day02(标识符、变量、数据类型、类型转换、进制转换、原码反码补码)
标识符.变量.数据类型.类型转换.进制转换.原码反码补码 标识符: java50个关键字不能做标识符,以数字开头不能做标识符(这个老是忘记写一个类名的时候) 变量: 变量分为成员变量和局部变量,注意作 ...
随机推荐
- 使用logstash同步MongoDB数据到es
input{ mongodb{ codec => "json" uri => 'mongodb://127.0.0.1:27017/kuaibao' placehold ...
- 毕设问题(1)表格table的表头自定义、复合表头,组合表格
毕业设计,是一个web项目,遇到的些问题,记录下来.也许也有同样只知道一些,不是那么系统的学过的人,会遇到同样的问题,希望有所帮助. 百度知道有这样一个问题: bootstrap table 如何实现 ...
- c++消息中间件
ZeroMQ ActiveMQ-CPP 另外 ZeroMQ 的作者用 C 重构了一套.改名叫:nanomsg ZeroMQ:https://www.cnblogs.com/rainbowzc/p/33 ...
- Django学习笔记-修改Django的默认的数据库
1.修改设置settings中的配置 DATABASES = { 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os ...
- SpringBoot中jar包转war包
参考博客 https://blog.csdn.net/qq_33689414/article/details/81812761 https://blog.csdn.net/u013412772/art ...
- mongodb 自增序列实现
MongoDB没有像SQL数据库外开箱即用自动递增功能.默认情况下,它采用了12字节的ObjectId为_id字段作为主键来唯一地标识文档.然而,可能存在的情况,我们可能希望_id字段有一些其它的自动 ...
- Mongodb使用shell实现与javascript的动态交互
关于利用mongodb的shell执行脚本,这点在以前的文章中有点遗漏:现在在此篇博客中做个补充: 一.在命令行中传入脚本文件 定义一个javasciprt文件,名称为:script1.js,内容如下 ...
- Go的学习 sort
1.排序操作主要都在 sort包中,导入就可以使用了 2.sort.Ints对整数进行排序 package main; import ( "fmt" "sort" ...
- 【串线篇】Mybatis缓存之二级缓存
1.应用 二级缓存:namespace级别的缓存:SqlSession关闭或者提交以后有效 一级缓存:SqlSession关闭或者提交以后,一级缓存的数据会放在二级缓存中: 二级缓存的使用:mybat ...
- golang-练习3
题目:将输入的字母变成其下一个字母,并且元音字母大写 package main import "fmt" func LetterChanges(str string) string ...